package com.foryou.system.common.utils;

import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;

/**
 * 日期处理
 * <p>
 * Created by LJX
 * 2017/12/16 0016 下午 9:43
 */
public class DateUtils {
    /**
     * 时间格式(yyyy-MM-dd)
     */
    public final static String DATE_PATTERN = "yyyy-MM-dd";
    /**
     * 时间格式(yyyyMMdd)
     */
    public final static String DATE_STR_PATTERN = "yyyyMMdd";
    /**
     * 时间格式(yyyy-MM-dd HH:mm:ss)
     */
    public final static String DATE_TIME_PATTERN = "yyyy-MM-dd HH:mm:ss";

    public static String format(Date date) {
        return format(date, DATE_TIME_PATTERN);
    }

    public static String format(Date date, String pattern) {
        if (date != null) {
            SimpleDateFormat df = new SimpleDateFormat(pattern);
            return df.format(date);
        }
        return null;
    }

    /**
     * 格式化日期 20170809
     *
     * @param date
     * @return
     */
    public static String subDate(String date) {
        StringBuilder stringBuilder = null;
        if (date != null && !date.equals("")) {
            stringBuilder = new StringBuilder(date);
        }
        return stringBuilder.toString().substring(0, 4) + "-" + stringBuilder.toString().substring(4, 6);
    }

    public static Date str2date(String date) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(DATE_PATTERN);
        return sdf.parse(date);
    }

    public static Date str2date(String date, String pattern) throws ParseException {
        SimpleDateFormat sdf = new SimpleDateFormat(pattern);
        return sdf.parse(date);
    }

    /**
     * 比较日期大小
     *
     * @param DATE1 第一个时间
     * @param DATE2 第二个时间
     * @return Integer null日期格式有误，1：第一个日期大，0：两个日期一样，-1：第二个日期大
     */
    public static Integer compareDate(String DATE1, String DATE2) {
        DateFormat df = new SimpleDateFormat(DATE_PATTERN);
        try {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() > dt2.getTime()) {
                return 1;
            } else if (dt1.getTime() < dt2.getTime()) {
                return -1;
            } else {
                return 0;
            }
        } catch (Exception e) {
        }

        return null;
    }

    public static Integer compareDateMin(String DATE1, String DATE2) {
        DateFormat df = new SimpleDateFormat(DATE_TIME_PATTERN);
        try {
            Date dt1 = df.parse(DATE1);
            Date dt2 = df.parse(DATE2);
            if (dt1.getTime() > dt2.getTime()) {
                return 1;
            } else if (dt1.getTime() < dt2.getTime()) {
                return -1;
            } else {
                return 0;
            }
        } catch (Exception e) {
        }

        return null;
    }

    /**
     * 132      * 时间加减分钟
     * 133      * @param startDate 要处理的时间，Null则为当前时间
     * 134      * @param minutes 加减的分钟
     * 135      * @return
     * 136
     */
    public static Date dateAddMinutes(Date startDate, int minutes) {
        if (startDate == null) {
            startDate = new Date();
        }
        Calendar c = Calendar.getInstance();
        c.setTime(startDate);
        c.set(Calendar.MINUTE, c.get(Calendar.MINUTE) + minutes);
        return c.getTime();
    }


}
